"""
序列化
利用ORM的Model 从数据库中拿到实例，实例到字典（序列化器干），字典到Json，发给浏览器
流程：
实例 => 字典
	单个实例 =》 字典
	多个实例 =》 many =True, 列表内有一个个字典
序列化不需要校验，（为什么？能存到数据库中，从数据库拿出来直接就是合法的）（虽然不作校验，但类型需和序列化器定义的类型一致）
"""
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'p43.settings')
django.setup(set_prefix=False)
# 所有测试代码，都要在上面4行之下
from employee.models import Employee
from employee.serializers import EmpSerializer
print('#' * 30)
emgr = Employee.objects
emp = emgr.get(pk=10001)
print(emp) # 就是Employee的一个实例

# 1 单个实例传给构造器的第一参数instance
serializer = EmpSerializer(instance=emp)
data = serializer.data # 序列化
print('#' * 30)
print(type(data), data) # ReturnDict
print('#' * 30)

# 2 查询集多个实例，使用many参数
emps = emgr.filter(pk__gt=10017)
serializer = EmpSerializer(instance=emps, many=True)
data = serializer.data
print('*' * 30)
print(type(data), data) # ReturnList列表套着字典
print('*' * 30)

"""结果
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
##############################
<Emp 10001,Georgi-Facello>
##############################
<class 'rest_framework.utils.serializer_helpers.ReturnDict'> {'emp_no': 10001, 'birth_date': '1953-09-02', 'first_name': 'Georgi', 'last_name': 'Facello', 'gender': 1, 'hire_date': '1986-06-26'}
##############################
******************************
<class 'rest_framework.utils.serializer_helpers.ReturnList'> [{'emp_no': 10018, 'birth_date': '1954-06-19', 'first_name': 'Kazuhide', 'last_name': 'Peha', 'gender': 2, 'hire_date': '1987-04-03'}, {'emp_no': 10019, 'birth_date': '1953-01-23', 'first_name': 'Lillian', 'last_name': 'Haddadi', 'gender': 1, 'hire_date': '1999-04-30'}, {'emp_no': 10020, 'birth_date': '1952-12-24', 'first_name': 'Mayuko', 'last_name': 'Warwick', 'gender': 1, 'hire_date': '1991-01-26'}]
******************************
"""
